package edu.ctbu.insurance.testG;

import com.baomidou.mybatisplus.generator.FastAutoGenerator;
import com.baomidou.mybatisplus.generator.engine.FreemarkerTemplateEngine;

import java.nio.file.Paths;

/**
 * @description: 数据库逆向生成器类
 * @author djl
 * @date 2024.06.28
 * @version 1.0
 */
public class MybatisPlusG {
    public static void main(String[] args) {
        //逆向工程生成器
        //数据库连接信息
        String url="jdbc:mysql://localhost:3306/insurance?serverTimezone=UTC";
        FastAutoGenerator.create(url, "root", "123456")
                //全局配置信息
                .globalConfig(builder -> builder
                        .author("djl")//作者信息
                        .outputDir(Paths.get(System.getProperty("user.dir")) + "/src/main/java")//生成到那个文件夹
                        .commentDate("yyyy-MM-dd")//是否生成创建时间
                )
                //包配置信息
                .packageConfig(builder -> builder
                        .parent("edu.ctbu.insurance")//父包路径
                        .entity("bean")//实体类包名
                        .mapper("mapper")//mapper所在的包
                        .service("service")//service所在包
                        .serviceImpl("service.impl")
                        .xml("mapper.xml")//出现在Mapper包中的 xml文件中
                )//模版构建配置
                .strategyConfig(builder -> builder
                        .addInclude("t_claim","t_customer","t_ins_product","t_policy","t_user")//要生成的表名  多个表名用逗号隔开  比如 t_emp,t_dept
                        .addTablePrefix("t_")//过滤表名前缀  生成实体类时会擦除掉表名的前缀 比如  表名:t_emp  类名:Emp
                        //.addTableSuffix("info")
                        .entityBuilder()//生成对应的实体类
                        .enableFileOverride() // 实体类覆盖
                        //.enableTableFieldAnnotation() // 属性加上说明注释
                        //.enableLombok() // 使用lombok
                        .serviceBuilder() // 设置服务类
                        .formatServiceFileName("%sService") // 格式化service

                )
                //使用freemarker模版
                .templateEngine(new FreemarkerTemplateEngine())
                .execute();
    }
}
